#include "logic_utility.hpp"


// 无参构造函数
TouchClass::TouchClass()
    : layoutPos(), maxValue(0), TextPtr(nullptr) {
    // 初始化默认值
}

TouchClass::TouchClass(ZKTextView *textView, const LayoutPosition &pos, int value)
    : layoutPos(pos), maxValue(value), TextPtr(textView) {
    if (TextPtr) {
        TextPtr->setTouchPass(true); // 初始化时设置触摸穿透
        layoutPos.mLeft -= maxValue;
        TextPtr->setPosition(layoutPos);
    }
}

void TouchClass::setValues(ZKTextView *textView, const LayoutPosition &pos, int value, bool layout) {
    TextPtr = textView;
    layoutPos = pos;
    maxValue = value;

    if (TextPtr) {
        TextPtr->setTouchPass(true); // 设置触摸穿透
        if(layout){
            layoutPos.mLeft -= maxValue; // 调整初始位置
            TextPtr->setPosition(layoutPos); // 更新位置
        }
    }
}

// 重写触摸事件处理方法
void TouchClass::onTouchEvent(ZKBase *pBase, const MotionEvent &ev) {
    if (TextPtr) {
        // 更新位置
        LayoutPosition pos = layoutPos;
        pos.mLeft += ev.mX > 0 ? (ev.mX > maxValue ? maxValue : ev.mX) : 0;
        TextPtr->setPosition(pos);
    }
}

void TouchClass::setProgressByPercentage(double percentage) {
    // 确保百分比在 [0.0, 1.0] 范围内
    if (percentage < 0.0) {
        percentage = 0.0;
    } else if (percentage > 1.0) {
        percentage = 1.0;
    }

    if (TextPtr) {
        // 计算实际进度值（基于 maxValue）
        int progress = static_cast<int>(maxValue * percentage);

        // 更新位置
        LayoutPosition newPos = layoutPos;  	// 初始位置为 layoutPos（构造函数中已处理偏移）
        newPos.mLeft += progress;           		// 添加进度偏移
        TextPtr->setPosition(newPos);      		// 设置新位置
    }
}

//获取制冷是否开启
bool isColdOpen() {
	return Global::Flags::Auto_refriger;
}

//获取制冰是否开启
bool isIceOpen() {
	return Global::Flags::Auto_iceing;
}

bool isCompressor(){
	return protocol::getLoadSwitch(E_DEV_LOAD_TYPE_COMPRESSOR);
}
//屏幕截图
void shot(){
	static int save_bmp_index = 0;
	ScreenHelper::screenShot(base::format("/mnt/extsd/%d.bmp", ++save_bmp_index).c_str());
	sync();
}
